bors [Mon, 14 Jul 2014 18:28:22 +0000 (18:28 +0000)]
auto merge of #195 : alexcrichton/cargo/install, r=wycats
This updates the `make install` target and adds a new `make dist` target which
will prepare a distributable tarball with an install script. All work is based
off the equivalent rust nightly tarball and nightly installation scripts.
Closes #159
Closes #184
bors [Mon, 14 Jul 2014 18:16:57 +0000 (18:16 +0000)]
auto merge of #190 : alexcrichton/cargo/cargo-run, r=wycats
This currently only supports executing the `src/main.rs` convention, no other.
Close #149
bors [Mon, 14 Jul 2014 18:03:22 +0000 (18:03 +0000)]
auto merge of #189 : alexcrichton/cargo/all-crate-types, r=wycats
While we support the `crate_type` key in the manifest, we need to pass through
all crate types to the `--extern` flag.
Closes #177
Alex Crichton [Mon, 14 Jul 2014 15:06:14 +0000 (08:06 -0700)]
Add an installation script to the repo
This updates the `make install` target and adds a new `make dist` target which
will prepare a distributable tarball with an install script. All work is based
off the equivalent rust nightly tarball and nightly installation scripts.
Closes #159
Closes #184
Alex Crichton [Sun, 13 Jul 2014 18:47:37 +0000 (11:47 -0700)]
Add a `cargo run` command
This currently only supports executing the `src/main.rs` convention, no other.
Close #149
bors [Sun, 13 Jul 2014 21:14:49 +0000 (21:14 +0000)]
auto merge of #176 : cburgdorf/cargo/docs_1, r=alexcrichton
I was chasing the `cargo clean` command it's way down to get a better understanding of the inner workings of cargo. Those minor documentation changes and variable renaming are the outcome which I think make the code base just a tiny bit more welcoming :)
Christoph Burgdorf [Sat, 12 Jul 2014 18:54:31 +0000 (20:54 +0200)]
Add documentation and make minor variable renames
Alex Crichton [Sun, 13 Jul 2014 18:33:11 +0000 (11:33 -0700)]
Pass all formats via --extern for libs
While we support the `crate_type` key in the manifest, we need to pass through
all crate types to the `--extern` flag.
Closes #177
bors [Sun, 13 Jul 2014 15:48:50 +0000 (15:48 +0000)]
auto merge of #188 : huonw/cargo/remove-src-test, r=wycats
It's not unreasonable to have unittests in a separate submodule of the
crate (being called `test` or `tests`), and having them in their own
file can be very sensible. Thus, the `src/test.rs` implicit default is
likely to trip up some perfectly reasonable use-cases. There's already
the `tests/...` default, so repairing a codebase after this removal is
just moving `src/test.rs` to `tests/whatever_name_you_want.rs`.
Closes #187.
Huon Wilson [Sun, 13 Jul 2014 12:45:26 +0000 (22:45 +1000)]
Remove the src/test.rs implicit test.
It's not unreasonable to have unittests in a separate submodule of the
crate (being called `test` or `tests`), and having them in their own
file can be very sensible. Thus, the `src/test.rs` implicit default is
likely to trip up some perfectly reasonable use-cases. There's already
the `tests/...` default, so repairing a codebase after this removal is
just moving `src/test.rs` to `tests/whatever_name_you_want.rs`.
Closes #187.
bors [Sun, 13 Jul 2014 05:44:50 +0000 (05:44 +0000)]
auto merge of #180 : sfackler/cargo/ndebug, r=wycats
This will disable debug!() and debug_assert!() statements.
Steven Fackler [Sat, 12 Jul 2014 22:30:24 +0000 (15:30 -0700)]
Pass --cfg ndebug when debug = false
This will disable debug!() and debug_assert!() statements.
bors [Sun, 13 Jul 2014 03:44:50 +0000 (03:44 +0000)]
auto merge of #161 : alexcrichton/cargo/cargo-test, r=wycats
This allows `cargo test` usage to filter test being run, use --nocapture, etc.
Alex Crichton [Thu, 10 Jul 2014 20:53:36 +0000 (13:53 -0700)]
Pass through extra arguments to `cargo test`
This allows `cargo test` usage to filter test being run, use --nocapture, etc.
bors [Sat, 12 Jul 2014 06:14:49 +0000 (06:14 +0000)]
auto merge of #172 : huonw/cargo/minor-refactoring, r=alexcrichton
There was some unnecessary duplication and allocation.
Huon Wilson [Sat, 12 Jul 2014 06:02:38 +0000 (16:02 +1000)]
Minor refactorings.
There was some unnecessary duplication and allocation.
bors [Sat, 12 Jul 2014 03:59:51 +0000 (03:59 +0000)]
auto merge of #170 : alexcrichton/cargo/same-name, r=wycats
This allows the dependency queue to properly handle packages with the same
name but from different sources.
A test was added which exercieses this functionality by depending on two
different revs of the same git repo.
bors [Sat, 12 Jul 2014 03:14:51 +0000 (03:14 +0000)]
auto merge of #163 : o11c/cargo/examples, r=wycats
This add support for `examples/*.rs` being built (as normal bin crates) during `cargo test`,
and `src/test.rs` and `tests/*.rs` being built and run (as test crates) during `cargo test`.
Alex Crichton [Fri, 11 Jul 2014 20:32:27 +0000 (13:32 -0700)]
Use PackageId in the DependencyQueue
This allows the dependency queue to properly handle packages with the same
name but from different sources.
A test was added which exercieses this functionality by depending on two
different revs of the same git repo.
Ben Longbons [Fri, 11 Jul 2014 20:34:50 +0000 (13:34 -0700)]
Do not run examples during 'cargo test'
Ben Longbons [Fri, 11 Jul 2014 00:08:19 +0000 (17:08 -0700)]
Add support for external tests
Ben Longbons [Thu, 10 Jul 2014 22:13:53 +0000 (15:13 -0700)]
Add support for examples
bors [Fri, 11 Jul 2014 19:59:51 +0000 (19:59 +0000)]
auto merge of #169 : cburgdorf/cargo/name_clean, r=alexcrichton
There are other unnamed commands like `verify-project` but I'm unsure if they are **not** listed on purpose because they should be used directly by the user less frequently. However, the clean command seems like a command that should be listed here.
Not sure about the wording though. It could be more abstract like *remove build artifacts* but given it's current behavior I think *remove target directory* is somehow straight forward, too.
Christoph Burgdorf [Fri, 11 Jul 2014 19:43:13 +0000 (21:43 +0200)]
list `clean` command in help
bors [Fri, 11 Jul 2014 19:21:07 +0000 (19:21 +0000)]
auto merge of #167 : alexcrichton/cargo/cross-compile, r=wycats
This also refactored many things along the way, I would recommend reading each commit individually rather than them all as a whole.
Closes #119
Alex Crichton [Fri, 11 Jul 2014 18:22:07 +0000 (11:22 -0700)]
Finish plugin support
This commit implements full support for plugins by answering the question of
whether any target needed as a plugin or needed as a target dependency. This
commit builds on the previous abstractions to enable parallel compilation
wherever possible.
bors [Fri, 11 Jul 2014 18:14:52 +0000 (18:14 +0000)]
auto merge of #166 : nielsle/cargo/command-env, r=alexcrichton
Quickfix for the build after https://github.com/rust-lang/rust/pull/15353
Niels langager Ellegaard [Fri, 11 Jul 2014 17:49:02 +0000 (19:49 +0200)]
Use command.env_set_all() instead of command.env()
Fixes build after
https://github.com/rust-lang/rust/pull/15353
Alex Crichton [Fri, 11 Jul 2014 16:08:51 +0000 (09:08 -0700)]
Add some simple tests for cross compilation
Alex Crichton [Fri, 11 Jul 2014 15:57:47 +0000 (08:57 -0700)]
Refactor the parallel job queue to its own module
Alex Crichton [Fri, 11 Jul 2014 15:45:42 +0000 (08:45 -0700)]
Refactor fingerprint logic out of cargo_rustc
Alex Crichton [Fri, 11 Jul 2014 15:35:23 +0000 (08:35 -0700)]
Refactor Context into its own submodule
Alex Crichton [Fri, 11 Jul 2014 15:06:39 +0000 (08:06 -0700)]
Refactor `Job` to its own module
Alex Crichton [Fri, 11 Jul 2014 14:50:24 +0000 (07:50 -0700)]
Improve intra-target parallelism
With cross compilation soon on the horizon, it may be required to build a
library for both the host and target architectures. These two copies can
certainly be built in parallel. Additionally, all binaries produced by a package
can also be built in parallel, but are currently forced to be built
sequentially.
This commit improves this parallelism by allowing each job to create more work
before the package is considered built. Only after all targets have been built
is the new fingerprint written.
Alex Crichton [Fri, 11 Jul 2014 14:50:01 +0000 (07:50 -0700)]
Update to master
Alex Crichton [Fri, 11 Jul 2014 01:26:30 +0000 (18:26 -0700)]
Implement a `plugin` flag for targets
If `plugin = true` is specified, then the target is considered a compiler plugin
which implies two separate properties:
* The library must be compiled as a dylib
* The library must be compiled for the host architecture
Alex Crichton [Thu, 10 Jul 2014 23:03:01 +0000 (16:03 -0700)]
Add bare-bones cross compilation support to cargo
This adds a new flag, --target, to the `cargo-build` command. This flag will
indicate that all output should be scoped under the `$triple` directory inside
of the output `target` directory. The compiler is invoked with `--target
$triple` and all custom build commands are passed `TRIPLE` if one is provided.
bors [Thu, 10 Jul 2014 21:51:51 +0000 (21:51 +0000)]
auto merge of #162 : rust-lang/cargo/fix-travis, r=tinyfix
Alex Crichton [Thu, 10 Jul 2014 20:37:32 +0000 (13:37 -0700)]
Fix travis builds
bors [Thu, 10 Jul 2014 19:52:04 +0000 (19:52 +0000)]
auto merge of #157 : rust-lang/cargo/graph-resolve, r=alexcrichton
This incorporates previous bugfixes by @alexcrichton that are still stuck in bors.
Alex Crichton [Thu, 10 Jul 2014 19:39:05 +0000 (12:39 -0700)]
Fix some tests
Alex Crichton [Thu, 10 Jul 2014 19:08:13 +0000 (12:08 -0700)]
Tighten up some tests
Alex Crichton [Thu, 10 Jul 2014 18:50:03 +0000 (11:50 -0700)]
Fix filtering for test deps
This fixes `cargo test` to only test the *local* package
Alex Crichton [Thu, 10 Jul 2014 18:49:47 +0000 (11:49 -0700)]
No need for a TempDir, use `-` as input
Alex Crichton [Thu, 10 Jul 2014 18:49:33 +0000 (11:49 -0700)]
impl Show for Profile
Alex Crichton [Thu, 10 Jul 2014 18:49:12 +0000 (11:49 -0700)]
Add -u to `cargo test`
Alex Crichton [Thu, 10 Jul 2014 15:45:31 +0000 (08:45 -0700)]
More updates to master
Tomaka17 [Wed, 9 Jul 2014 07:43:28 +0000 (09:43 +0200)]
Make README nightlies links clickable
Michael Gehring [Wed, 9 Jul 2014 13:38:10 +0000 (15:38 +0200)]
ToStr::to_str -> ToString::to_string
Conflicts:
src/cargo/core/resolver.rs
src/cargo/ops/cargo_rustc.rs
Yehuda Katz [Thu, 10 Jul 2014 08:26:51 +0000 (01:26 -0700)]
Remove hardcoding
Yehuda Katz [Thu, 10 Jul 2014 07:48:50 +0000 (00:48 -0700)]
Add some unit tests
Yehuda Katz [Thu, 10 Jul 2014 07:27:40 +0000 (00:27 -0700)]
Fixed a number of bugs related to rustc building
Most notably, `resolve` now takes the root, so it can properly link the
root package with its dependencies (which is required to build the
--externs for the root package).
Yehuda Katz + Carl Lerche [Thu, 10 Jul 2014 00:48:37 +0000 (17:48 -0700)]
Resolve more correctly and add --extern
This commit adds support for passing --extern to dependencies. It allows
multiple copies of the same named dependency in the system, as long as
they come from different repos.
Alex Crichton [Wed, 9 Jul 2014 22:04:59 +0000 (15:04 -0700)]
Disable passing -g for now
Alex Crichton [Wed, 9 Jul 2014 20:55:00 +0000 (13:55 -0700)]
Fix --release not compiling upstream deps with -O3
This touches up the filtering logic to ensure that upstream dependencies as well
as local dependencies are built with optimizations when `cargo build --release`
is used.
Alex Crichton [Wed, 9 Jul 2014 20:08:44 +0000 (13:08 -0700)]
Fix testing bins with lib deps
If a package had both bin and lib deps, `cargo test` was not building the `lib`
dependency when building the bins with `--test`. This commit adds an extra
"test" profile (not compiled with --test) for situations such as this which is
filtered out normally but kept around for the `cargo test` case.
bors [Wed, 9 Jul 2014 02:44:51 +0000 (02:44 +0000)]
auto merge of #150 : rust-lang/cargo/source-id-cleanup, r=alexcrichton
This PR is a stepping stone towards eventual use of `--extern`, which will allow multiple packages with the same name to exist in the transitive dependency graph.
Yehuda Katz + Carl Lerche [Tue, 8 Jul 2014 23:28:12 +0000 (16:28 -0700)]
Fix registry query fn
Yehuda Katz + Carl Lerche [Tue, 8 Jul 2014 22:50:50 +0000 (15:50 -0700)]
emit -C extra-filename and metadata
Yehuda Katz + Carl Lerche [Tue, 8 Jul 2014 21:58:56 +0000 (14:58 -0700)]
Refactor PackageId.namespace -> source_id
bors [Tue, 8 Jul 2014 16:37:57 +0000 (16:37 +0000)]
auto merge of #147 : alexcrichton/cargo/ls-files, r=wycats
Apparently older versions of git report all contents of submodules in the
ls-files command!
Alex Crichton [Tue, 8 Jul 2014 16:30:54 +0000 (09:30 -0700)]
Ignore lib directory for exes check
Apparently older versions of git report all contents of submodules in the
ls-files command!
bors [Tue, 8 Jul 2014 15:59:50 +0000 (15:59 +0000)]
auto merge of #141 : jdeseno/cargo/cargo-clean, r=alexcrichton
Adds cargo-clean sub-command. Would address Issue #51 if this PR is merged.
bors [Tue, 8 Jul 2014 15:14:51 +0000 (15:14 +0000)]
auto merge of #124 : alexcrichton/cargo/no-more-binaries, r=wycats
Closes #58
Alex Crichton [Sat, 5 Jul 2014 23:55:26 +0000 (16:55 -0700)]
Ensure no more binaries are checked in
Closes #58
Joshua DeSeno [Mon, 7 Jul 2014 08:50:05 +0000 (17:50 +0900)]
cargo clean. resolves #51
bors [Tue, 8 Jul 2014 06:14:56 +0000 (06:14 +0000)]
auto merge of #142 : rust-lang/cargo/new-names, r=alexcrichton
This PR moves Cargo over to the new naming based on [RFC 35](https://github.com/rust-lang/rfcs/blob/master/complete/0035-remove-crate-id.md).
* You should no longer use `#[crate_name]` or `#[crate_id]` in any crate managed by Cargo.
* You no longer need a `[[lib]]` section in your `Cargo.toml` if you name your library `src/lib.rs`.
* You no longer need a `[[bin]]` section in your `Cargo.toml` if you name your library `src/main.rs`.
* You can include multiple `[[bins]]` in `src/bin/*.rs` and Cargo will treat them as if they were specified via `[[bin]]`.
This commit does not yet add support for `-C metadata` or `-C extra-file-name`, but that is coming soon.
Yehuda Katz [Tue, 8 Jul 2014 04:50:45 +0000 (21:50 -0700)]
Remove glob dependency
bors [Tue, 8 Jul 2014 05:14:55 +0000 (05:14 +0000)]
auto merge of #125 : alexcrichton/cargo/issue-120, r=wycats
Closes #120
Yehuda Katz + Carl Lerche [Tue, 8 Jul 2014 00:59:18 +0000 (17:59 -0700)]
This updates Cargo for #[crate_name]
Alex Crichton [Sun, 6 Jul 2014 00:10:23 +0000 (17:10 -0700)]
Warn about missing [[lib]] and [[bin]] sections
Closes #120
bors [Tue, 8 Jul 2014 01:46:02 +0000 (01:46 +0000)]
auto merge of #139 : tomjakubowski/cargo/fix-symlink-blowup, r=alexcrichton
Fingerprinting will fail at an `fs::stat()` call if there is a symlink in
a package's directory pointing to a non-existent file or directory.
This commit recovers from an `fs::stat(`) error on these bogus symlinks by
faking an mtime of 0, which should not affect the overall fingerprint.
Fix #135
Tom Jakubowski [Tue, 8 Jul 2014 01:07:23 +0000 (18:07 -0700)]
Ignore the broken symlinks test on windows
Tom Jakubowski [Mon, 7 Jul 2014 21:46:03 +0000 (14:46 -0700)]
fingerprint: Recover from fs::stat errors
Fingerprinting will fail at an fs::stat() call if there is a broken
symlink in a package's directory. This commit recovers from fs::stat()
errors on broken symlinks by treating them as having mtime 0, which
should not affect the overall fingerprint.
Fix #135
bors [Mon, 7 Jul 2014 22:29:56 +0000 (22:29 +0000)]
auto merge of #140 : rust-lang/cargo/release, r=carllerche
Yehuda Katz + Carl Lerche [Mon, 7 Jul 2014 22:17:34 +0000 (15:17 -0700)]
Add --release and related refactoring
bors [Mon, 7 Jul 2014 20:44:55 +0000 (20:44 +0000)]
auto merge of #136 : Tomaka17/cargo/multiple-build-cmds, r=alexcrichton
Closes #69
Adds a new syntax for the `build = ` command:
```
build = [
["./configure"],
["make", "lib/libovr.a"],
["/bin/mkdir", "target"],
["/bin/cp", "lib/libovr.a", "target/"]
]
```
The current syntax `build = "make"` still works.
`build = [ "a", "b" ]` is forbidden because it is ambiguous.
Tomaka17 [Mon, 7 Jul 2014 16:33:45 +0000 (18:33 +0200)]
Support for multiple and cleaner build commands
Yehuda Katz [Mon, 7 Jul 2014 14:52:38 +0000 (07:52 -0700)]
Merge pull request #134 from alexcrichton/nightlies
Add documentation about cargo nightlies
Alex Crichton [Mon, 7 Jul 2014 14:49:14 +0000 (07:49 -0700)]
Add documentation about cargo nightlies
bors [Mon, 7 Jul 2014 13:28:45 +0000 (13:28 +0000)]
auto merge of #131 : alexcrichton/cargo/update-to-master, r=update
Alex Crichton [Mon, 7 Jul 2014 13:27:09 +0000 (06:27 -0700)]
Update with master changes
bors [Mon, 7 Jul 2014 13:18:13 +0000 (13:18 +0000)]
auto merge of #129 : riccieri/cargo/no_more_crate_id, r=alexcrichton
This solves warnings about the use of the deprecated `#![crate_id]` attribute, as well as the deprecated `--crate-file-name` command line option. See rust-lang/rust@
c3ef04be5589901e7f3d9428ebe8f1eb2bdca7e4 for details.
Note that this won't compile on the current master without #128 (or equivalent). I can rebase after a fix lands
bors [Mon, 7 Jul 2014 13:11:04 +0000 (13:11 +0000)]
auto merge of #128 : riccieri/cargo/nightly-fix, r=alexcrichton
On rust-lang/rust@
ed47c479d73fd7b57d3b493e03c74e2932733163 (which landed yesterday via rust-lang/rust@
b8ef5cf1310a7b1e31d0993885d867a6804597ad), `url.path` now returns a `Path`, not a `String`. This one-line patch makes cargo compile again (at least as of rust-lang/rust@
b8ef5cf1310a7b1e31d0993885d867a6804597ad, the `crate_id` changes haven't reached me yet).
Renato Zannon [Mon, 7 Jul 2014 05:22:30 +0000 (02:22 -0300)]
Use --print-file-name instead of --crate-file-name
Renato Zannon [Mon, 7 Jul 2014 05:19:59 +0000 (02:19 -0300)]
Use #![crate_name] instead of #![crate_id]
Renato Zannon [Sun, 6 Jul 2014 23:07:56 +0000 (20:07 -0300)]
url.path is now a Path, not a String
bors [Sat, 5 Jul 2014 23:59:58 +0000 (23:59 +0000)]
auto merge of #123 : alexcrichton/cargo/canonicalize-github-urls, r=wycats
In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.
Closes #104
Alex Crichton [Sat, 5 Jul 2014 23:44:55 +0000 (16:44 -0700)]
Canonicalize github urls for the resolver
In addition to canonicalizing checkout locations, this canonicalizes packages
for the resolver. This allows two dependencies with slightly different urls
pointing to the same repository to resolve to the same location and package.
Closes #104
bors [Sat, 5 Jul 2014 17:59:56 +0000 (17:59 +0000)]
auto merge of #122 : Benny1992/cargo/master, r=alexcrichton
Tried with [[executable]] and got this:
```bash
FizzBuzz (master*) $ cargo build mri-2.1.2
unused manifest key: executable.name
unused manifest key: executable.path
Fresh fizzbuzz v0.0.1 (file:/home/benny/Web/RustApplications/FizzBuzz)
```
I think ```executable``` section should be ```bin```
Benny [Sat, 5 Jul 2014 13:36:36 +0000 (15:36 +0200)]
use [[bin]] instead of [[executable]]
bors [Fri, 4 Jul 2014 02:44:56 +0000 (02:44 +0000)]
auto merge of #116 : Indiv0/cargo/typofix, r=alexcrichton
Currently, the "single source" error appears like this, with missing whitespace:
lib/game-of-life $ cargo build --verbose
An unknown error occurred
Caused by:
At the moment, Cargo only supports asingle source for a particular package name (piston).
This fixes the typo.
Indiv0 [Fri, 4 Jul 2014 02:29:04 +0000 (22:29 -0400)]
Fix missing space typo in single source error
bors [Thu, 3 Jul 2014 22:31:19 +0000 (22:31 +0000)]
auto merge of #110 : bcobb/cargo/patch-1, r=alexcrichton
Just a small grammar change :smile:
bors [Thu, 3 Jul 2014 22:03:26 +0000 (22:03 +0000)]
auto merge of #106 : alexcrichton/cargo/no-path, r=wycats
This allows usage of cargo without all the executables in your PATH, you only
need to be able to reach the first one.
bors [Thu, 3 Jul 2014 21:51:32 +0000 (21:51 +0000)]
auto merge of #113 : rust-lang/cargo/dev-deps, r=alexcrichton
Development dependencies are included when building or testing the current package, but not packages that depend on it:
```toml
[dev-dependencies.hamcrest]
git = "https://github.com/carllerche/hamcrest-rust.git"
```
Yehuda Katz + Carl Lerche [Thu, 3 Jul 2014 01:13:00 +0000 (18:13 -0700)]
Fix up dev-dependencies
Yehuda Katz + Carl Lerche [Wed, 2 Jul 2014 23:58:25 +0000 (16:58 -0700)]
Added [dev-dependencies] sections to Cargo.toml
If you put a dependency in [dev-dependencies], it will only be
used when building (or testing) your packages, not other packages that
depend on it.
Yehuda Katz + Carl Lerche [Wed, 2 Jul 2014 23:32:24 +0000 (16:32 -0700)]
Add support for non-transitive dependencies
Development and test dependencies should not be transitively pulled in.
For example, if I use rust-curl, and it happens to use hamcrest for
testing, that does not mean I depend on hamcrest.
Björn Steinbrink [Wed, 2 Jul 2014 17:37:15 +0000 (19:37 +0200)]
Update hammer.rs to be compatible with the current rust master